<?php

/**
 * Исправляет значение статуса назначения в соответствии с ролью текущего
 * пользователя.
 *
 * @param   string  $value
 * @return  string
 */
function smarty_modifier_status($value) {
    static $map;
    if (!isset($map)) {
        $map = smarty_modifier_status__map();
    }
    return isset($map[$value]) ? $map[$value] : $value;
}

/**
 * Возвращает проекцию статусов назначений на их наименования для роли текущего
 * пользователя.
 *
 * @return  array
 */
function smarty_modifier_status__map() {

    // роль текущего пользователя
    $role = User_Session::getRole();

    // проекция статусов назначения на их наименования для пользователя данной
    // роли.
    //
    // :KLUDGE: morozov 11092007: показываем и sent, и received как
    // scheduled, потому что статус изменяется уже _после_ выборки из БД.
    $override = array(
        User::PATIENT => array(
                'sent' => 'scheduled',
            'received' => 'scheduled',
    ));

    return isset($override[$role]) ? $override[$role] : array();
}
